Syntax10.Scn.Fnt StampElems Alloc 29 Jan 96 MODULE DummyPrinter; (* mah, jt IMPORT Macintosh, Sys, Printer, Directories, SYSTEM; dpi: LONGINT; printHnd: Sys.TPrHnd; printPort: Sys.GrafPtr; PROCEDURE GetDPI; TYPE XY=RECORD x, y: INTEGER END; GetRsl=RECORD op, err: INTEGER; misc: ARRAY 7 OF INTEGER; cnt: INTEGER; res: ARRAY 27 OF XY END; SetRsl=RECORD op, err: INTEGER; dum: LONGINT; hPrint: Sys.TPrHnd; x, y: INTEGER END; VAR res: XY; getRsl: GetRsl; setRsl: SetRsl; i: INTEGER; BEGIN dpi:=0; getRsl.op:=4; Sys.PrGeneral(SYSTEM.ADR(getRsl)); IF (getRsl.err=0)&(Sys.PrError()=0) THEN i:=0; WHILE i < getRsl.cnt DO res:=getRsl.res[i]; IF (res.x=res.y)&(res.x > dpi) THEN dpi:=res.y END; INC(i) END; setRsl.hPrint:=printHnd; setRsl.x:=SHORT(dpi); setRsl.y:=SHORT(dpi); setRsl.op:=5; Sys.PrGeneral(SYSTEM.ADR(setRsl)); IF (setRsl.err#0)OR(Sys.PrError()#0) THEN dpi:=0 END END END GetDPI; PROCEDURE * Open(VAR name, user: ARRAY OF CHAR; password: LONGINT); VAR ph: Sys.TPrRealHnd; pp: Sys.TPrRealPtr; d: Directories.Directory; BEGIN Printer.res:=1; d := Directories.Current(); Sys.PrOpen; IF Sys.PrError()=0 THEN Sys.PrintDefault(printHnd); GetDPI; IF dpi#0 THEN IF Sys.PrError()=0 THEN Printer.res:=0; ph:=SYSTEM.VAL (Sys.TPrRealHnd, printHnd); pp:=SYSTEM.VAL (Sys.TPrRealPtr, ph.p); Printer.PageWidth:=SHORT(LONG(pp.right)*300 DIV dpi); Printer.PageHeight:=SHORT(LONG(pp.bottom)*300 DIV dpi) ELSE Sys.PrCloseDoc(printPort); Sys.PrClose END ELSE Sys.PrClose END ELSE Sys.PrClose END; Directories.Change(d.path) END Open; PROCEDURE * Page(nofcopies: INTEGER); END Page; PROCEDURE * Close; END Close; PROCEDURE * UseListFont(VAR name: ARRAY OF CHAR); END UseListFont; PROCEDURE * ReplConst(x, y, w, h: INTEGER); END ReplConst; PROCEDURE * ContString(VAR s, fname: ARRAY OF CHAR); END ContString; PROCEDURE * String(x, y: INTEGER; VAR s, fname: ARRAY OF CHAR); END String; PROCEDURE * ReplPattern(x, y, w, h, col: INTEGER); END ReplPattern; PROCEDURE * Picture(x, y, w, h, mode: INTEGER; adr: LONGINT); END Picture; PROCEDURE * Circle(x0, y0, r: INTEGER); END Circle; PROCEDURE * Ellipse(x0, y0, a, b: INTEGER); END Ellipse; PROCEDURE * Line(x0, y0, x1, y1: INTEGER); END Line; PROCEDURE * Spline(x0, y0, n, open: INTEGER; VAR X, Y: ARRAY OF INTEGER); END Spline; PROCEDURE Install*; BEGIN Macintosh.prOpen:=Open; Macintosh.prClose:=Close; Macintosh.prPage:=Page; Macintosh.prCircle:=Circle; Macintosh.prEllipse:=Ellipse; Macintosh.prLine:=Line; Macintosh.prSpline:=Spline; Macintosh.prPicture:=Picture; Macintosh.prReplConst:=ReplConst; Macintosh.prReplPattern:=ReplPattern; Macintosh.prString:=String; Macintosh.prContString:=ContString; Macintosh.prUseListFont:=UseListFont END Install; BEGIN printHnd:=Sys.NewHandle (120) END DummyPrinter.